@瞌睡虫
2年前 提问
1个回答

应对缓冲区溢出该采取哪些措施

房乐
2年前

应对缓冲区溢出该采取以下措施:

  • 严格编写程序代码:借助工具来协助程序开发者解决缓冲区溢出,但是可是由于C语言的本身特点,这些工具不能找出所有的缓冲区溢出漏洞,因此侦错技术只是被用来减少缓冲区溢出漏洞,并不能完全消灭,想要完全消灭这类漏洞,就需要程序员严格编写代码。

  • 禁止执行堆栈数据段:在进行系统操作时数据地址空间不可执行,从而禁止攻击者执行被植入的攻击代码,这种措施在一定的程度上也对缓冲区溢出攻击起到了防范作用。但是攻击者不一定非要通过植入攻击代码来实现缓冲区溢出攻击,所以这种方法并不能彻底解决缓冲区溢出攻击。

  • 利用程序编译器的边界检查:植入攻击代码时引起缓冲区溢出攻击的一个方面,改变程序执行的流程则是另一个方面,而利用程序编译器的边界检查则使得缓冲区溢出攻击不可能实现,从而完全消除了缓冲区溢出攻击的威胁。

  • 指针完全性检查:程序指针完整性检查和边界检查略有不同,程序指针完整性检查在程序指针被改变之前检测,因此即使攻击者成功改变了程序的指针,也会因为先前检测到指针的变化而失效,这样虽然不能完全解决问题,但是他确实阻止了大多数的缓冲区溢出攻击,并且这种方法在性能方面有很大优势,兼容性特别优良。

  • 及时修补漏洞:攻击者利用缓冲区溢出的主要攻击手段就是利用服务器程序、数据库程序、操作系统等的漏洞,所以及时修补这些漏洞可以从根本上解决缓冲区溢出的问题,这种漏洞可以通过打补丁、升级软件等方法来解决。